In recent years there has been a huge proliferation of the number of mobile applications (commonly referred to as “apps”) developed for devices such as smartphones, tablets and other mobile computing devices. For example, there are more than a million active mobile applications available in the marketplace for use on hundreds of millions of iOS (iPad, iPhone, etc.) and Android mobile platform devices. On a typical day it is estimated that upwards of 1,000 new apps are submitted to Apple's App Store.
There's no question that web and mobile application performance affects user behavior. Businesses and application owners are therefore interested in measuring real users' behavior and experience to understand how mobile application and web performance impacts their business. This has created a demand for Real User Monitoring (RUM) tools that capture and aggregate performance and engagement metrics for mobile applications and websites. Various tools and methods exist for collecting performance and business metrics from websites and web-based applications. For example, Boomerang is a piece of JavaScript that can be added to the bottom of a Web page, where it measures performance, e.g., page load time, and the like, and “beacons” (i.e., sends) the results back to a server.
A number of problems exist that make it difficult to quickly gather business metrics from a user of a native mobile application and websites. For instance, obtaining custom business metrics of a native mobile app typically requires that a software developer write special code (in Objective-C for an iOS app or Java for an Android app) that extracts and transmits one or more metrics of interest. This code is commonly included in a new version of the mobile app. The new version of the mobile app must then be submitted for approval to the App Store. Approval and release of the new version of the native app usually takes several weeks. Once the new version of the native app is available, existing app users must then update to the new version before metrics can be obtained from those users. At that point, the developer might detect an error or bug in the code that requires another iterative fix. In addition, by the time that metrics and performance data begins to flow to the analytics, the metric being measured might not be of interest anymore to the business or app owner due to a variety of reasons, e.g., changing market conditions.